library(knitr)
library(dplyr)
library(questionr)Les fonctions de R-Base
2025-06-01
Les deux exercices qui suivent utilisent volontairement les fonctions de base du langage R (on dit que l’on programme en R-base) à l’exclusion de tout package c’est-à-dire de tout outil graphique ou statistique mis au point ultérieurement.
Par comparaison avec le jeu de lego, cela revient à effectuer des constructions avec la boîte de base. A première vue cela peut sembler frustrant. Mais en réalité cela ne bride en rien l’imagination et permet d’apprendre plein de choses sans être distrait …
La manipulation des tableaux de données : c’est-à-dire à la fois l’importation, le recodage éventuel des variables et la correction de leur type, la sélection de lignes ou de colonnes pour créer des sous-tableaux.
L’exploration statistique univariée : c’est-à-dire le calcul de résumés simples d’une variable à l’aide de paramètres statistiques (valeurs centrales, dispersion) et la production de graphiques élémentaires.
Pour rendre l’apprentissage moins austère, nous avons choisi un tableau de données sur les pays d’Afrique de l’Ouest en 2018
Cliquer sur les menus déroulants File/Import Dataset/From text (base) puis suivre le menu
On utilise par exemple la fonction read.table() en précisant les paramètres utiles :
dim() fournit les dimensions d’un tableauclass() fournit le type d’un tableauhead() iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED LANGFR
1 BEN Bénin 11.6 3224 0.62 61.6 18.8 60.5 47.6 0 1
2 BFA Burkina Faso 20.0 2161 0.20 61.4 17.6 49.0 29.7 1 1
3 CIV Côte d'Ivoire 25.4 5134 0.33 57.6 18.9 59.4 51.0 0 1
4 GHA Ghana 30.1 5304 0.61 63.9 21.5 34.9 56.4 0 0
5 GIN Guinée 12.6 2531 0.26 61.4 18.0 64.9 36.3 0 1
6 GMB Gambie 2.3 2176 0.27 61.9 17.8 39.0 61.6 0 0
tail()str()'data.frame': 15 obs. of 11 variables:
$ iso3 : chr "BEN" "BFA" "CIV" "GHA" ...
$ nom : chr "Bénin" "Burkina Faso" "Côte d'Ivoire" "Ghana" ...
$ POP : num 11.6 20 25.4 30.1 12.6 2.3 1.9 4.9 19.4 4.5 ...
$ PIB : int 3224 2161 5134 5304 2531 2176 1969 1462 2305 5120 ...
$ CO2HAB: num 0.62 0.2 0.33 0.61 0.26 0.27 0.18 0.32 0.19 0.6 ...
$ ESPVIE: num 61.6 61.4 57.6 63.9 61.4 61.9 58.2 63.9 59.1 64.8 ...
$ AGEMED: num 18.8 17.6 18.9 21.5 18 17.8 18.8 19.4 16.3 20.1 ...
$ MORINF: num 60.5 49 59.4 34.9 64.9 39 54 53.5 62 51.5 ...
$ URBANI: num 47.6 29.7 51 56.4 36.3 61.6 43.6 51.4 42.8 54.1 ...
$ LOCKED: int 0 1 0 0 0 0 0 0 1 0 ...
$ LANGFR: int 1 1 1 0 1 0 0 0 1 0 ...
as.xxx()La fonction summary() donne un aperçu général des variables
iso3 nom POP PIB
Length:15 Length:15 Min. : 1.90 Min. :1208
Class :character Class :character 1st Qu.: 6.30 1st Qu.:1830
Mode :character Mode :character Median : 12.60 Median :2305
Mean : 25.72 Mean :2957
3rd Qu.: 21.45 3rd Qu.:4238
Max. :198.40 Max. :5304
CO2HAB ESPVIE AGEMED MORINF
Min. :0.100 Min. :54.50 Min. :15.20 Min. :31.80
1st Qu.:0.195 1st Qu.:58.65 1st Qu.:17.90 1st Qu.:47.70
Median :0.320 Median :61.40 Median :18.80 Median :53.50
Mean :0.376 Mean :60.91 Mean :18.52 Mean :54.01
3rd Qu.:0.605 3rd Qu.:63.05 3rd Qu.:19.40 3rd Qu.:61.25
Max. :0.740 Max. :67.80 Max. :21.50 Max. :78.50
URBANI LOCKED LANGFR
Min. :16.50 non enclavé:12 non francophone:7
1st Qu.:42.15 enclavé : 3 francophone :8
Median :47.50
Mean :44.91
3rd Qu.:51.20
Max. :61.60
Elle s’effectue avec l’opérateur <-
[1] 15 11
iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED
1 BEN Bénin 11.6 3224 0.62 61.6 18.8 60.5 47.6 non enclavé
2 BFA Burkina Faso 20.0 2161 0.20 61.4 17.6 49.0 29.7 enclavé
LANGFR
1 francophone
2 francophone
iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED
14 SLE Sierra Leone 7.7 1691 0.14 54.5 19.4 78.5 42.3 non enclavé
15 TGO Togo 8.0 1574 0.43 60.9 19.4 47.4 42.0 non enclavé
LANGFR
14 non francophone
15 francophone
On utilise la syntaxe tab2<-tab[conditions , ] avec les opérateurs logiques suivants
iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED
2 BFA Burkina Faso 20.0 2161 0.20 61.4 17.6 49 29.7 enclavé
9 MLI Mali 19.4 2305 0.19 59.1 16.3 62 42.8 enclavé
11 NER Niger 22.9 1208 0.10 62.2 15.2 48 16.5 enclavé
LANGFR
2 francophone
9 francophone
11 francophone
iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED
1 BEN Bénin 11.6 3224 0.62 61.6 18.8 60.5 47.6 non enclavé
3 CIV Côte d'Ivoire 25.4 5134 0.33 57.6 18.9 59.4 51.0 non enclavé
4 GHA Ghana 30.1 5304 0.61 63.9 21.5 34.9 56.4 non enclavé
5 GIN Guinée 12.6 2531 0.26 61.4 18.0 64.9 36.3 non enclavé
6 GMB Gambie 2.3 2176 0.27 61.9 17.8 39.0 61.6 non enclavé
7 GNB Guinée-Bissau 1.9 1969 0.18 58.2 18.8 54.0 43.6 non enclavé
8 LBR Libéria 4.9 1462 0.32 63.9 19.4 53.5 51.4 non enclavé
10 MRT Mauritanie 4.5 5120 0.60 64.8 20.1 51.5 54.1 non enclavé
12 NGA Nigéria 198.4 5145 0.65 54.5 18.1 75.7 50.8 non enclavé
13 SEN Sénégal 16.1 3355 0.74 67.8 18.5 31.8 47.5 non enclavé
14 SLE Sierra Leone 7.7 1691 0.14 54.5 19.4 78.5 42.3 non enclavé
15 TGO Togo 8.0 1574 0.43 60.9 19.4 47.4 42.0 non enclavé
LANGFR
1 francophone
3 francophone
4 non francophone
5 francophone
6 non francophone
7 non francophone
8 non francophone
10 non francophone
12 non francophone
13 francophone
14 non francophone
15 francophone
iso3 nom POP PIB CO2HAB ESPVIE AGEMED MORINF URBANI LOCKED
3 CIV Côte d'Ivoire 25.4 5134 0.33 57.6 18.9 59.4 51.0 non enclavé
4 GHA Ghana 30.1 5304 0.61 63.9 21.5 34.9 56.4 non enclavé
11 NER Niger 22.9 1208 0.10 62.2 15.2 48.0 16.5 enclavé
12 NGA Nigéria 198.4 5145 0.65 54.5 18.1 75.7 50.8 non enclavé
LANGFR
3 francophone
4 non francophone
11 francophone
12 non francophone
&)On utilise la syntaxe tab2<-tab[ , liste ] avec différentes syntaxes pour les listes de variables :
iso3 nom POP PIB MORINF
1 BEN Bénin 11.6 3224 60.5
2 BFA Burkina Faso 20.0 2161 49.0
3 CIV Côte d'Ivoire 25.4 5134 59.4
4 GHA Ghana 30.1 5304 34.9
5 GIN Guinée 12.6 2531 64.9
6 GMB Gambie 2.3 2176 39.0
On utilise la syntaxe tab2<-tab[ conditions , liste]
$ num [1:15] 11.6 20 25.4 30.1 12.6 2.3 1.9 4.9 19.4 4.5 ...
[1] 25.72
-Solution n°2 : utilisation de [ , ]
Les variables qualitatives nominales ou factor sont des objets composés d’une liste de numéros et d’une liste d’étiquettes.
[1] francophone francophone francophone non francophone
[5] francophone non francophone non francophone non francophone
[9] francophone non francophone francophone non francophone
[13] francophone non francophone francophone
Levels: non francophone francophone
Factor w/ 2 levels "non francophone",..: 2 2 2 1 2 1 1 1 2 1 ...
Si la variable chargée est de type character il faut la transformer avec as.factor() et repérer les niveaux disponibles avec levels()
On peut remplacer les niveaux en utilisant l’instruction levels()à nouveau, mais suivie d’un vecteur de charactères indiquant les changements de nom.
[1] francophone francophone francophone non francophone
[5] francophone non francophone non francophone non francophone
[9] francophone non francophone francophone non francophone
[13] francophone non francophone francophone
Levels: non francophone francophone
Factor w/ 2 levels "non francophone",..: 2 2 2 1 2 1 1 1 2 1 ...
On peut transformer une variable quantitative en facteur avec la fonction cut()
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.90 6.30 12.60 25.72 21.45 198.40
[1] (10,30] (10,30] (10,30] (30,200] (10,30] (0,10] (0,10] (0,10]
[9] (10,30] (0,10] (10,30] (30,200] (10,30] (0,10] (0,10]
Levels: (0,10] (10,30] (30,200]
Factor w/ 3 levels "(0,10]","(10,30]",..: 2 2 2 3 2 1 1 1 2 1 ...
On peut ensuite recoder les classes avec levels()
Pour dénomber une variable qualitative, on utilise l’instruction table() qui crée un objet particulier qui n’est ni un data.frame, ni une matrix.
On peut créer des tables à 2 dimensions
Un objet de type table peut être manipulé par des fonctions spéciales comme addmargins() quii rajoute des sommes en ligne (et en colonne si la table est de dimension 2)
Les objets de type table sont souvent la source de crises de nerf de la part des étudiants qui les confondent avec des objets de type vecteur, matrice ou data.frame. Il existe des fonctions de conversion d’un type vers un autre mais leur emploi n’est pas très simple.
On retiendra donc dans l’immédiat que les résultats de l’instruction tablesont des objets transitoires qui servent uniquement à afficher des résultats ou produire des graphiques à l’aide des instructions plot() ou barplot().
La fonction plot() s’applique à la plupart de objets R. Elle produit des résultats différents selon le type d’objet qu’elle a identifié. Si on l’applique à un vecteur de type factor on obtient un diagramme en bâtons (à ne pas confondre avec un histogramme)
On peut améliorer le graphique en lui ajoutant des paramètres c’est-à-dire des instructions séparées par des virgules. Le retour à la ligne après chaque paramètre n’est pas obligatoire mais il est recommandé car il rend le code plus clair.
Une variable numérique peut faire l’objet d’un ensemble de résumés statistiques à l’aide de fonctions élémentaires
min() : minimummax() : maximummean() : moyennesd() : écart-type (en anglais : standard deviation, soit sd en abrégé)sum() : sommePour calculer les quantiles on peut utiliser la fonction quantile() en paramétrant la valeur de fréquence cumulée ascendante
50%
2305
0% 25% 50% 75% 100%
1208.0 1830.0 2305.0 4237.5 5304.0
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
1208.0 1506.8 1667.6 2007.4 2170.0 2305.0 2808.2 3328.8 5122.8 5140.6 5304.0
Une variable quantitative peut être discrétisée avec cut(). Elle devient alors un facteur qu’on peut dénomber avec table() puis visualiseer avec plot() sous la forme de diagramme en bâtons.
La fonction boxplot() permet de visualiser une distribution sous forme de boîte à moustache où l’on repère facilement :
La syntaxe de base est la suivante :
Mais on peut améliorer la figure avec quelques paramètres de plus
Dans le cas d’une variable quantitative continue, la visualisation la plus logique est l’histogramme que l’on peut tracer avec la fonction hist(). Celle-ci comporte de nombreux paramètres que l’on peut visualiser dans la fenêtre Help qui se trouve en bas à gauche de R-studio :
Comme d’habitude, on peut appliquer la syntaxe la plus simple :
On peut ensuite améliorer avec l’ajout de titres et un choix précis de classes.
On peut également ajouter une courbe lissée de la distribution avec les fonctions lines() et density()en indiquant la portée du lissage à l’aide du paramètre bw(band width) qui est exprimé dans l’unité de mesure de X. On peut aussi ajouter un diagramme de distribution avec la fonction rug()
Nous verrons en détail dans les chapitres suivants comment croiser deux variables d’un point de vue statistiques. Mais on peut déjà indiquer brièvement comment les visualiser rapidement à l’aide de trois exemples.
Nous avons survolé les principales fonctions élémentaires de R-Base pour montrer qu’il est facile et surtout rapide de les employer en lieu et place d’un tableur comme Excel ou d’un logiciel de statistique click-bouton.
Il reste encore beaucoup à apprendre mais à ce stade il est important de bien consolider les acquis et de connaître par coeur le nom des principales fonctions de base qui ont été présentées au cours de ce chapitre.
Vous allez donc reprendre l’ensemble de ce chapitre en utilisant un tableau complet comportant plus de pays et de variables.